//
// Description: 高精度减法 模板
// Created by Loading on 2021/10/10.
//

/* 适用于求两个超大数（超过 64 位无符号整型）相减的结果 */

#include <bits/stdc++.h>

using namespace std;

// 判断 A 是否 >= B
bool cmp(vector<int> &A, vector<int> &B) {
    if (A.size() != B.size()) {
        return A.size() > B.size();
    }
    for (int i = (int) A.size() - 1; i >= 0; --i) {
        if (A[i] != B[i]) {
            return A[i] > B[i];
        }
    }
    return true;
}

// res = A - B，A >= 0, B >= 0，注意：A、B 均为逆序存储，第一位为个位
vector<int> sub(vector<int> &A, vector<int> &B) {
    vector<int> res;

    // 借位
    int t = 0;
    for (int i = 0; i < A.size(); ++i) {
        t = A[i] - t;
        if (i < B.size()) {
            t -= B[i];
        }
        // (t + 10) % 10 包含 t >= 0 和 t < 0 两种情况
        res.emplace_back((t + 10) % 10);
        if (t < 0) {// 有借位
            t = 1;
        } else {// 无借位
            t = 0;
        }
    }
    // 去掉前导 0
    while (res.size() > 1 && res.back() == 0) {
        res.pop_back();
    }

    return res;
}

int main() {
    string s1 = "123879437826", s2 = "33398763409733";

    vector<int> A, B;
    // 逆序存储
    for (int i = (int) s1.size() - 1; i >= 0; --i) {
        A.emplace_back(s1[i] - '0');
    }
    for (int i = (int) s2.size() - 1; i >= 0; --i) {
        B.emplace_back(s2[i] - '0');
    }

    vector<int> res;
    // 结果是否为负值
    bool isNegative = false;
    if (cmp(A, B)) {
        res = sub(A, B);
    } else {
        isNegative = true;
        res = sub(B, A);
    }

    if (isNegative) {
        cout << '-';
    }
    for (int i = (int) res.size() - 1; i >= 0; --i) {
        cout << res[i];
    }
    cout << endl;

    return 0;
}